public class T {

    ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if (headA == null || headB == null) return null;
        ListNode pA = headA, pB = headB;
        while (pA != pB) {
            pA = pA == null ? headB : pA.next;
            pB = pB == null ? headA : pB.next;
        }
        return pA;
    }

}



   class ListNode {
      int val;
      ListNode next;
      ListNode(int x) {
          val = x;
          next = null;
      }
  }
//
// class Solution {
//    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
//
//
//        if(headA==null||headB==null){
//            return null;
//        }
//        ListNode n1=headA;
//        ListNode n2=headB;
//        int n3=0;
//        int n4=0;
//
//        while(n1!=null){
//            n1=n1.next;
//            n3++;
//        }
//        while(n2!=null){
//            n2=n2.next;
//            n4++;
//        }
//
//        int n=0;
//
//        n1=headA;
//        n2=headB;
//
//        if(n3>n4){
//            n=n3-n4;
//            while(n!=0){
//                n1=n1.next;
//                n--;
//            }
//        }else if(n4>n3){
//            n=n4-n3;
//            while (n!=0){
//                n2=n2.next;
//                n--;
//            }
//        }
//
//        while(n1!=null&&n2!=null){
//
//            if(n1==n2){
//                return n1;
//            }
//
//
//            n1=n1.next;
//            n2=n2.next;
//        }
//
//        return null;
//
//
//
//
//
//
//    }
//}


